/**
 * COPYRIGHT. Harry Wu 2011. ALL RIGHTS RESERVED.
 * Project: WakeRemote4J
 * Author: Harry Wu <harrywu304@gmail.com>
 *
 */
package org.shaitu.wakeremote4j.util;

import java.util.Vector;

public class StringUtil {

	/**
	 * convert a hex string to hex bytes
	 * @param hex representation string
	 * @return hex bytes
	 */
	public static byte[] strToHex(String pStr) {
		byte NUMBER_KEY = 48;
		byte UPPER_KEY = 55;
		byte LOWER_KEY = 87;
		byte HEX_KEY = 16;
		byte NUMBER_MAX = 57;
		byte NUMBER_MIN = 48;
		byte UPPER_MAX = 70;
		byte UPPER_MIN = 65;
		byte LOWER_MAX = 102;
		byte LOWER_MIN = 97;
		byte checkByte = 0;
		
		byte bytes[] = pStr.getBytes();
		byte tmpBytes[] = new byte[2];
		String tmpStr = null;
		int i = -1;
		int ii = -1;
		Vector v = new Vector();
		while (i < bytes.length - 1) {
			tmpBytes[0] = 0;
			tmpBytes[1] = 0;
			try {
				i++;
				tmpBytes[0] = bytes[i];
				checkByte = tmpBytes[0];
				if (tmpBytes[0] >= NUMBER_MIN && tmpBytes[0] <= NUMBER_MAX) {
					tmpBytes[0] = (new Integer(tmpBytes[0] - NUMBER_KEY))
							.byteValue();
				}
				if (tmpBytes[0] >= UPPER_MIN && tmpBytes[0] <= UPPER_MAX) {
					tmpBytes[0] = (new Integer(tmpBytes[0] - UPPER_KEY))
							.byteValue();
				}
				if (tmpBytes[0] >= LOWER_MIN && tmpBytes[0] <= LOWER_MAX) {
					tmpBytes[0] = (new Integer(tmpBytes[0] - LOWER_KEY))
							.byteValue();
				}
				if (checkByte == tmpBytes[0]) {
					continue;
				}
				tmpBytes[0] = (new Integer(tmpBytes[0] * HEX_KEY)).byteValue();
				i++;
				tmpBytes[1] = bytes[i];
				checkByte = tmpBytes[1];
				if (tmpBytes[1] >= NUMBER_MIN && tmpBytes[1] <= NUMBER_MAX) {
					tmpBytes[1] = (new Integer(tmpBytes[1] - NUMBER_KEY))
							.byteValue();
				}
				if (tmpBytes[1] >= UPPER_MIN && tmpBytes[1] <= UPPER_MAX) {
					tmpBytes[1] = (new Integer(tmpBytes[1] - UPPER_KEY))
							.byteValue();
				}
				if (tmpBytes[1] >= LOWER_MIN && tmpBytes[1] <= LOWER_MAX) {
					tmpBytes[1] = (new Integer(tmpBytes[1] - LOWER_KEY))
							.byteValue();
				}
				if (checkByte == tmpBytes[1]) {
					continue;
				}
				ii++;
			} catch (ArrayIndexOutOfBoundsException arrayindexoutofboundsexception) {
			}
			v.add(new Integer(tmpBytes[0] + tmpBytes[1]));
		}
		Object intList[] = v.toArray();
		byte result[] = new byte[intList.length];
		for (int li = 0; li < intList.length; li++) {
			result[li] = ((Integer) intList[li]).byteValue();
		}
		return result;
	}
	
    /**
     * check if a string is null or blank
     * @param str
     * @return
     */
    public static boolean isNullOrBlank(String str) {
        if (str == null || "".equals(str.trim())) {
            return true;
        }
        return false;
    }


}
